Solved SOCKET PROGRAMMING C++ SERVER JAVA CLIENT PYTHON

您所在的位置:网站首页 python bind socket Solved SOCKET PROGRAMMING C++ SERVER JAVA CLIENT PYTHON

Solved SOCKET PROGRAMMING C++ SERVER JAVA CLIENT PYTHON

2023-03-12 08:47| 来源: 网络整理| 查看: 265

SOCKET PROGRAMMING

C++ SERVER

JAVA CLIENT

PYTHON CLIENT

PROBLEM IS FIX THE JAVA PROGRAM RETURN WRONG VALUE

USE UBUNTU FOR RUNNING

SERVER C++ #include #include #include #include #include #include #include #include

#define PORT 8080

void* handle_client(void* arg) { int client_socket = *(int*) arg; char buffer[1024] = {0}; int valread = read(client_socket, buffer, 1024);

int num1, num2, sum; memcpy(&num1, buffer, sizeof(num1)); memcpy(&num2, buffer + sizeof(num1), sizeof(num2)); sum = num1 + num2;

send(client_socket, &sum, sizeof(sum), 0); printf("Sum sent: %d\n", sum); close(client_socket); return NULL; }

int main(int argc, char const* argv[]) { int server_fd, new_socket, valread; struct sockaddr_in address; int opt = 1; int addrlen = sizeof(address);

if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) { perror("socket failed"); exit(EXIT_FAILURE); }

if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) { perror("setsockopt"); exit(EXIT_FAILURE); } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(PORT);

if (bind(server_fd, (struct sockaddr*)&address, sizeof(address)) < 0) { perror("bind failed"); exit(EXIT_FAILURE); }

if (listen(server_fd, 3) < 0) { perror("listen"); exit(EXIT_FAILURE); }

printf("Server listening on port %d\n", PORT);

while (1) { if ((new_socket = accept(server_fd, (struct sockaddr*)&address, (socklen_t*)&addrlen)) < 0) { perror("accept"); exit(EXIT_FAILURE); }

pthread_t thread; int* client_socket_ptr = new int(new_socket); if (pthread_create(&thread, NULL, handle_client, (void*) client_socket_ptr) != 0) { perror("pthread_create"); exit(EXIT_FAILURE); } }

shutdown(server_fd, SHUT_RDWR); return 0; }

JAVA CLIENT

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java.net.Socket;

import java.nio.ByteBuffer;

import java.nio.ByteOrder;

public class JAVACLIENT {

public static void main(String[] args) throws IOException {

try (Socket clientSocket = new Socket("localhost", 8080);

DataOutputStream out = new DataOutputStream(clientSocket.getOutputStream());

DataInputStream in = new DataInputStream(clientSocket.getInputStream())) {

int num1 =1202;

byte[] num1Arr = ByteBuffer.allocate(4).order(ByteOrder.BIG_ENDIAN).putInt(num1).array();

out.write(num1Arr);

System.out.println("Number 1: " + num1);

int num2 = 1798;

byte[] num2Arr = ByteBuffer.allocate(4).order(ByteOrder.BIG_ENDIAN).putInt(num2).array();

out.write(num2Arr);

System.out.println("Number 2: " + num2);

byte[] sumArr = new byte[4];

in.readFully(sumArr);

int sum = ByteBuffer.wrap(sumArr).order(ByteOrder.BIG_ENDIAN).getInt();

System.out.println("Sum sent by Java Client: " + sum);

} catch (IOException e) {

System.err.println("Couldn't get I/O for the connection to localhost");

System.exit(1);

}

}

}

PYTHON CLIENT

import socket

import struct

server_address = ('localhost', 8080)

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client_socket.connect(server_address)

Number1_bytes = 1202

Number1_bytes_bytes = struct.pack('i', Number1_bytes)

client_socket.sendall(Number1_bytes_bytes)

print("Number 1:", Number1_bytes)

Number2 = 1798

Number2_bytes = struct.pack('i', Number2)

client_socket.sendall(Number2_bytes)

print("Number 2:", Number2)

sum_bytes = client_socket.recv(4)

sum = struct.unpack('i', sum_bytes)[0]

print("Sum sent by Python:", sum)

client_socket.close()



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3